// pages/infoYz/components/sfz/index.js
Component({

  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    frontImage: '', // 身份证正面图片路径
    backImage: '',  // 身份证反面图片路径
    frontResult: null, // 正面识别结果
    backResult: null,  // 反面识别结果
    loading: false, // 加载状态
  },
  /**
   * 组件的方法列表
   */
  methods: {
  // 拍摄或选择身份证正面照片
  chooseFrontImage() {
    this.chooseImage('front')
  },

  // 拍摄或选择身份证反面照片
  chooseBackImage() {
    this.chooseImage('back')
  },
  gotoInfoYz () {
    this.triggerEvent('closePopBox', { action: 'closePopBox' });
  },
  nexts () {
    const {frontImage, backImage} = this.data
    if (backImage && frontImage) {
      this.triggerEvent('setinfoItems', { action: 'setinfoItems', popBoxPageType: 'sfz', fn: true });
    } else {
      wx.showToast({ title: '请完善信息', icon: 'none' });
    }
  },
  // 选择图片通用方法
  chooseImage(type) {
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const tempFilePaths = res.tempFilePaths
        console.log('tempFilePaths', tempFilePaths)
        if (type === 'front') {
          this.setData({ frontImage: tempFilePaths[0] })
        } else {
          this.setData({ backImage: tempFilePaths[0] })
        }
      },
      fail: (err) => {
        console.error('选择图片失败:', err)
        wx.showToast({
          title: '选择图片失败',
          icon: 'none'
        })
      }
    })
  },

  // 上传并识别身份证正面
  recognizeFront() {
    if (!this.data.frontImage) {
      wx.showToast({
        title: '请先选择身份证正面照片',
        icon: 'none'
      })
      return
    }
    this.recognizeIdCard(this.data.frontImage, 'face')
  },

  // 上传并识别身份证反面
  recognizeBack() {
    if (!this.data.backImage) {
      wx.showToast({
        title: '请先选择身份证反面照片',
        icon: 'none'
      })
      return
    }
    this.recognizeIdCard(this.data.backImage, 'back')
  },

  // 调用阿里云OCR接口识别身份证
  recognizeIdCard(imagePath, side) {
    this.setData({ loading: true })
    
    // 读取图片文件并转换为Base64
    wx.getFileSystemManager().readFile({
      filePath: imagePath,
      encoding: 'base64',
      success: (res) => {
        const base64Image = res.data
        
        // 准备请求数据
        const requestData = {
          image: base64Image,
          configure: JSON.stringify({ side: side })
        }
        
        // 生成签名
        const timestamp = new Date().getTime()
        const stringToSign = app.globalData.appKey + timestamp + app.globalData.appSecret
        const signature = this.generateSignature(stringToSign)
        
        // 发送请求到阿里云OCR接口
        wx.request({
          url: app.globalData.aliOcrUrl,
          method: 'POST',
          header: {
            'Content-Type': 'application/json; charset=utf-8',
            'Authorization': 'APPCODE ' + app.globalData.appKey,
            'X-Ca-Timestamp': timestamp,
            'X-Ca-Signature': signature,
            'X-Ca-Signature-Headers': 'X-Ca-Timestamp'
          },
          data: JSON.stringify(requestData),
          success: (res) => {
            if (res.statusCode === 200 && res.data.success) {
              const result = res.data.prism_ocr_idcard_result
              if (side === 'face') {
                this.setData({ frontResult: result })
              } else {
                this.setData({ backResult: result })
              }
              wx.showToast({
                title: '识别成功',
                icon: 'success'
              })
            } else {
              console.error('识别失败:', res)
              wx.showToast({
                title: '识别失败，请重试',
                icon: 'none'
              })
            }
          },
          fail: (err) => {
            console.error('请求失败:', err)
            wx.showToast({
              title: '网络请求失败',
              icon: 'none'
            })
          },
          complete: () => {
            this.setData({ loading: false })
          }
        })
      },
      fail: (err) => {
        console.error('读取图片失败:', err)
        wx.showToast({
          title: '读取图片失败',
          icon: 'none'
        })
        this.setData({ loading: false })
      }
    })
  },

  // 生成签名
  generateSignature(stringToSign) {
    // 这里需要使用加密库生成HMAC-SHA1签名
    // 微信小程序中可以使用CryptoJS库，需要先引入
    // 简化版，实际使用时需要替换为真实的签名生成逻辑
    return 'your_generated_signature'
  },

  // 预览图片
  previewImage(e) {
    const { type } = e.currentTarget.dataset
    const imagePath = type === 'front' ? this.data.frontImage : this.data.backImage
    if (imagePath) {
      wx.previewImage({
        urls: [imagePath],
        current: imagePath
      })
    }
  }
  }
})